Recently, human actuated gestures have been increasingly used to control computing devices. Various devices may be used for inputting gestures, for example mice, touch-sensitive surfaces, motion detectors using camera signals, and pressure-sensitive input surfaces, to name a few examples. Generally, there are now many means for allowing a user to provide continuous (rapidly sampled) discrete two or three dimensional input strokes (e.g., sets of connected location points or paths interpolated therefrom).
To make use of these input means, graphical user interfaces (GUIs) have been implemented to recognize gestures and invoke specific actions for specific recognized gestures. Typically, gesture recognition might include collating input points sensed at a high sample rate, determining which input points are associated with each other, and analyzing traits or features of a set of associated input points to recognize a gesture. While any type of software or program can implement gestures, gesturing is often used in conjunction with graphical desktops, graphical user shells, window managers, and the like (referred to collectively as GUIs).
GUIs are often provided to allow a user to manage and execute applications. For example, a GUI environment may have user-activatable operations or instructions to allow direct manipulation of graphical objects representing windows, processes, or applications, to open specified applications, to pause or terminate specified applications, to toggle between applications, to manipulate graphical elements of applications such as windows, to provide standard dialogs, and so forth. In other words, in a GUI environment, a user may use gestures or other means to physically manipulate digital objects in ways related to semantic meaning attached to such objects (such as discarding and closing). Previously, such operations, if gesture controlled at all, would each have their own respective discrete gestures. For example, a simple gesture such as a downward stroke has been used to invoke a close operation to close a target application, which might be a currently focused or active application.
Such a close gesture has been used to terminate an application, which might destroy an executing instance of the application, kill the application's process, etc. Thus, the next time a user requests the terminated application a full boot sequence or launch of the application is usually needed, which may result in a significant delay between the time when the application is requested and the time when the application becomes available for user interaction. Additionally, as the instant inventors alone have recognized, there is no efficient gesture-based way for a user to specify different levels of application “closing”, for instance, suspending, terminating, and restarting an application. As only the inventors have observed, because gestures are intended to represent physical manipulation of a digital object representing an application, there has been no ability to map gestures to a sufficient number of different actions to simultaneously support manipulation of the numerous possible underlying states of an application.
Discussed below are ways to implement multi-stage gestures and ways to use those gestures to issue various commands for controlling applications.